把"a;b;c;d;e;f"倒序的最好算法?

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:48:37
str="a;b;c;d;e;f"
倒序为
str="f;e;d;c;b;a"

大家有什么说法?分享一下。记得读书的时候经常写这个,现在太久没有写代码了,不懂了。

希望提供算法的同时,给出时间复杂度和空间复杂度,方便我们对比,共同学习
.
..
=====================================================
=
=太好了,那么多有兴趣的网友参加讨论,那么现在有无人来收尾一下,对比楼下这些算法呢,到底是那个最好,哪个次之。
=
=======================================================
=
= xx_lzj - 总监 九级 你的评点非常好,谢谢你
=
=
=========================================================

那就是并查集了
int fat[maxn];
void work(int a)
{
if (fat[a]==a)
return a;
fat[a]=work(fat[a]);
return fat[a];
}
int main()
{
for (int i=1;i<=n;i++)
fat[i]=i;
for (int i=1;i<=n;i++)
{
cin>>a>>b;
if (work(a)!=work(b))//a,b祖先不同
fat[work(a)]=work(b);//把a,b的祖先连在一起
}
///////最后fat编好相同的元素就在一个集合中。

用什么循环,for还是while,不会影响复杂度。
最佳算法:
时间复杂度O(n/2),空间复杂度O(1)
char[] str = new char[]{'a',';','b',';','c',';','d',';','e',';','f'};
char temp='\0';
int len=str.Length;
for (int i = 0; i < len / 2; i++)
{
temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
以下语句可以用于输出: